As pointed out by Pratt, "Programming Languages Design and Implementation", Prentice Hall, Inc., 1975, pp. 360-384, COBOL is a high-level language widely used since the early 1960's primarily for business applications of computers. An important characteristic is its English-like syntax of language statements. Sequence control in COBOL includes a statement label such as GOTO, an IF-THEN-ELSE construct, and a PERFORM statement. This PERFORM statement serves both as a simple subprogram call statement and an iteration statement. The PERFORM statement provides a call return structure without change in referencing environment. Relatedly, the translation of COBOL into efficient executable code is a complex compilation problem.
Whether or not the PERFORM statement is iterative, it invokes a parameterless subroutine call. The call is explicit while the return is implicit. Associated with the call or name is a procedure in the nature of a subroutine. The procedures may be either "open" or "closed". An "open" procedure is a sequence any of whose statements may be branched to externally, while a "closed" procedure is a sequence only preselected ones of whose statements may be branched to externally. Note that "open" procedures may be reached in a variety of ways. In addition to calling or branching, an "open" procedure may be accessed by "falling through" another procedure. Thus, after the last statement of a first procedure, the first statement of a second procedure in a contiguous address is then invoked.
A PERFORM statement can occur within the procedure associated with another PERFORM statement. The PERFORM statement that is nested within the procedure associated with the other PERFORM statement is "called by" the other PERFORM statement. It is usually true that the PERFORM statements which are most deeply nested in this way are also the most frequently invoked and thus merit preferential treatment during the compilation.